const app = getApp()

const user={
    uID:0,
    openId:null,
    avatarUrl:null,
    nickName: null,
    balance: 0,
}

Page({
  

    /**
     * 页面的初始数据
     */
    data: {
        uID:0,
        openId:"0",
        //图片现在有三种来源，第一个是刚注册时选择的图片，第二个是清理缓存时报错的图片
        //第三个就是我重新缓存的图片
        //每当图片渲染错误报错时，都用第二种方法，然后将图片缓存，使用第三种方法
        //这个应该可以大大提升效率，缓存的总比发送网络请求来得快点
        avatarUrl:"https://tse2-mm.cn.bing.net/th/id/OIP-C.7wKn4GAmSiHqTExPlloYVAAAAA?w=176&h=176&c=7&r=0&o=5&dpr=1.1&pid=1.7",
        nickName: "微信用户",
        balance: 0,
        order: 0, //卖书订单数量
        packs: 0, //待取件
        onclick:false,
        islogined:false,
        timer:null
    },
    onLoad: function (options) {
      this.checkInitStatus();
    },
  
    checkInitStatus: function () {
      // 在初始化完成后执行获取用户信息的逻辑
          this.islogin();
       // 检查间隔时间，根据实际需求调整
    },

    //判断是否登陆过,如果登陆过则直接渲染页面
    async islogin(){
      //判断是否已注册过
      var that=this
      this.setData({
        openId:app.globalData.openid
      })
      //已注册
      if(app.globalData.islogined&&app.globalData.autologin){
        //全局数据绑定 globalData
        wx.getStorage({
          key:'cachedImage',
          success(res){
            that.setData({
              avatarUrl:res.data
            })
          },
          fail(err) {
            that.handleImageError()
          }
        })
        this.setData({
          uID:app.globalData.userInfo.uid,
          balance:app.globalData.userInfo.balance,
          nickName:app.globalData.userInfo.nickName,
          islogined:true  //这个数值一定要改
        })
      }
    },
     handleImageError: function (e) {
      // 在这里设置默认图片地址
      this.setData({
        avatarUrl:app.globalData.url+'/ShowImageUser/'+this.data.uID
      });
      //avatarUrl再进行缓存，然后传到服务器，进行更新Url
      wx.downloadFile({
        url: this.data.avatarUrl, // 图片地址
        success: function (res) {
          if (res.statusCode === 200) {
            wx.getFileSystemManager().saveFile({
              tempFilePath: res.tempFilePath,
              success: function (result) {
                wx.setStorage({
                  key: 'cachedImage',
                  data: result.savedFilePath
                });
                console.log('图片下载并保存成功:', result.savedFilePath);
              },
              fail: function (error) {
                console.error('保存图片到本地缓存失败:', error);
              }
            });
          } else {
            console.error('图片下载失败:', res.statusCode);
          }
        },
        fail: function (error) {
          console.error('下载图片失败:', error);
        }
      });
  
      // 传输默认图片地址到服务器更新URL
      var that=this

      
      wx.getStorage({
        key: 'cachedImage',
        success: function(res) {
          that.setData({
            avatarUrl:res.data
          })
        },
        fail: function(error) {
          console.error('获取数据失败', error);
        }
      });
    },
    //点击一键登录按钮
    async changeOnclick(){
      if (app.globalData.islogined) {
        await app.islogin()
        await this.getNew()
        app.globalData.autologin=true
        await this.islogin()
        await this.changeAutoLoginState()
      }else{
        this.setData({
          onclick:true
        })
      }
      
    },
    //得到输入的昵称
    onChangeInput(e) {
      this.setData({
        nickName: e.detail.value
      })
    },


    //得到头像
    onChooseAvatar(e){
        user.avatarUrl=e.detail.avatarUrl
        this.setData({
          avatarUrl:e.detail.avatarUrl
        })
    },


    

    //注册
    async register(){
      
        //需要将数据发送给后端，然后在本地存储openid
        user.openId=this.data.openId,
        user.avatarUrl= this.data.avatarUrl,
        user.nickName=this.data.nickName

      const registerUser= await wx.p.request({
          url: app.globalData.url+'/login/registerUser',
          method:"POST",
          data:JSON.stringify(user),
          header:{
            'Content-Type':'application/json'
          }
        })
        console.log(registerUser.data)
        //注册成功,接收id，数据绑定
        
          this.setData({
            uID:registerUser.data.data,
            islogined:true
          })
        
        //本节第一个难点，就是上传头像
        const uploadImageState = await new Promise((resolve, reject) => {
          wx.uploadFile({
            filePath: this.data.avatarUrl,
            name: 'file',
            url: app.globalData.url+'/uploadUserImage/'+this.data.uID,
            success: res => {
              resolve(res); // 如果上传成功，将结果传递给await表达式
            },
            fail: err => {
              reject(err); // 如果上传失败，将错误传递给await表达式
            }
          });
        });
          
    },

    //退出登录
    logout() {
      var that=this
      wx.showModal({
        title: '提示',
        content: '确定要退出吗？退出后需重新登录。',
        complete: async (res) => {
          if (res.confirm) {
            await that.changeAutoLoginState()
            that.setData({
              islogined:false
            })
            app.globalData.userInfo=null
          }
        }
      })
    },
    //调用一次就改变一次自动登录状态
    async changeAutoLoginState(){
      await wx.p.request({
        url: app.globalData.url+"/login/logout",
        data:{
          uid:this.data.uID
        }
      })
    },
    // 不同界面登录监听
    goToPage1: function () {
        wx.navigateTo({
            url: '/pages/buy/buy',
        })
    },
    goToPage2: function () {
        var that = this
        wx.navigateTo({
            url: '/pages/sellbook_order/sellbook_order',
            success(res){
                res.eventChannel.emit('UID',{data:that.data.UID})
            }
        })
    },
    goToPage3: function () {
        wx.navigateTo({
            url: '/pages/pack/pack',
        })
    },
    goToPage4: function () {
        // this.getuserinfor()
    },

    
    
    // 获取所有书柜位置
    getGPS() {
      wx.navigateTo({
        url: '/pages/local/local',
      })
    },

    //得到最新的卖书订单数量，待取件数量，账户余额
    async getNew(){
      const result=await wx.p.request({
        url: app.globalData.url+'/pack/getNew',
        method:"GET",
        data:{
          uid:app.globalData.userInfo.uid
        }
      })
      this.setData({
        order:result.data.data[0],
        packs:result.data.data[1],
        balance:result.data.data[2]
      })
    },
    //查询订单记录
    async records(events){
      console.log(events.currentTarget.id);
      
      var that=this
      const result=await wx.p.request({
        method:"GET",
        url: app.globalData.url+"/login/getrecords",
        data:{
          uid:that.data.uID,
          type:events.currentTarget.id
        }
      })
      if (result.data.code==1) {
        wx.navigateTo({
          url: '/pages/record/record',
          success(res){
            res.eventChannel.emit(events.currentTarget.id,result.data.data)
          }
        })
      }
      
    },
 


    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
      if(app.globalData.userInfo.uid!=null){
        this.getNew()
      }
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {
      
    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {
        
        // console.log(app.globalData.user)
    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})